package org.huangrui.spark.java.sql;

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SaveMode;
import org.apache.spark.sql.SparkSession;

/**
 * @Author hr
 * @Create 2024-10-20 18:47
 */
public class SparkSQL04_Source_CSV {
    public static void main(String[] args) {
        SparkSession spark = SparkSession.builder().appName("SparkSQL04_Source_CSV").master("local[2]").getOrCreate();
        // TODO CSV文件就是将数据采用逗号分隔的数据文件
        Dataset<Row> csv = spark.read().option("header", "true") // 配置表头
                .option("sep", "_") // 配置分割符：\t => tsv, csv
                .csv("data/user.csv");
        csv.show();

        // TODO 如果输出目的地已经存在，那么SparkSQL默认会发生错误，如果不希望发生错误，那么就需要修改配置：保存模式
        //      append : 追加
        csv.write()
                .mode(SaveMode.Overwrite)
                .option("header", "true") // 配置
                .csv("output");

        // select avg(_c2) from user
        spark.stop();
    }
}
